﻿'''
题目描述
近些年来，我国防沙治沙取得显著成果。某沙漠新种植N棵胡杨（编号1-N），排成一排。
一个月后，有M棵胡杨未能成活。
现可补种胡杨K棵，请问如何补种（只能补种，不能新种），可以得到最多的连续胡杨树？
输入描述
N 总种植数量，1 <= N <= 100000
M 未成活胡杨数量，M 个空格分隔的数，按编号从小到大排列，1 <= M <= N
K 最多可以补种的数量，0 <= K <= M
输出描述
最多的连续胡杨棵树
示例1
输入
5
2
2 4
1
输出
3
说明
补种到2或4结果一样，最多的连续胡杨棵树都是3。

示例2
输入
10
3
2 4 7
1
输出
6
说明
种第7棵树，最多连续胡杨树棵数位6（5，6，7，8，9，10）
'''
#输入总种植数量n
total_num = int(input())
#输入未成活胡杨数量m
dead_num = int(input())
#输入未成活胡杨编号,注意转换为list使用map
dead_list = list(map(int,input().split()))
#输入最多可以补种数量k
new_number = int(input())

#定义一个列表表示胡杨成活,初始全为0
tree_list = total_num * [0]
#标记未成活胡杨，标记为1
for num in dead_list:
    tree_list[num - 1] = 1
#使用快慢指针
left = 0        #初始化滑动窗口左边界
sum_left = 0    #左窗口未成活胡杨数量
sum_right = 0   #右窗口未成活胡杨数量
max_len = 0     #最大连续成活区域长度
for right in range(total_num):
    sum_right += tree_list[right]   #更新右边界的未成活数量

    #如果窗口内的未成活数量大于可以补种的数量
    while sum_right - sum_left > new_number:
        sum_left += tree_list[left]     #缩小窗口，左边界右移，并统计左窗口未成活数量
        left += 1
    #如果大于已有连续区域长度，则更新(注意，右窗口每次移动都要更新，而不是大于补种时才更新)
    max_len = max(max_len,right - left + 1)
#输出最大连续区域长度
print(max_len)

